#include<bits/stdc++.h>
using namespace std;
int main(){
int n , temp;
cin>>n;
vector<pair<long long int,int>>vec(n);
int arr[n]={0};
for(int x=0;x<n;x++){
cin>>temp;
vec[x] = {temp , x};
}
sort(vec.begin(),vec.end());
for(int x=0;x<n;x++){
int h = vec[x].second;
arr[h] = x;
}
vector<vector<int>>ans;
vector<int>tmp;
int visited[n]={0};
for(int x=0;x<n;x++){
if(visited[x]==0){
if(arr[x]==x){
vector<int>k;
visited[x] = 1;
k.push_back(x+1);
ans.push_back(k);
}else{
int l = x;
while(visited[arr[l]]!=1){
tmp.push_back(arr[l]+1);
visited[arr[l]]=1;
l = arr[l];
}
ans.push_back(tmp);
tmp.clear();
}
}
}
cout<<ans.size()<<endl;
for(auto z:ans){
cout<<z.size()<<" ";
for(auto y:z){
cout<<y<<" ";
}
cout<<'\n';
}
return 0;
}
1832. Check if the Sentence Is Pangram | 1678. Goal Parser Interpretation |
1389. Create Target Array in the Given Order | 1313. Decompress Run-Length Encoded List |
1281. Subtract the Product and Sum of Digits of an Integer | 1342. Number of Steps to Reduce a Number to Zero |
1528. Shuffle String | 1365. How Many Numbers Are Smaller Than the Current Number |
771. Jewels and Stones | 1512. Number of Good Pairs |
672. Richest Customer Wealth | 1470. Shuffle the Array |
1431. Kids With the Greatest Number of Candies | 1480. Running Sum of 1d Array |
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |